
import java.util.Scanner;

public class StringLinked {
    public static void main(String[] args) {
        //给定两个字符串a和b,我们定义a*b为他们的连接。
// 例如，如果a=”abc” 而b=”def”， 则a*b=”abcdef”。
// 如果我们将连接考虑成乘法，一个非负整数的乘方将用一种通常的方式定义：
// a^0=””(空字符串)，a^(n+1)=a*(a^n)。
//输入
//每一个测试样例是一行可打印的字符作为输入，用s表示。s的长度至少为1，
// 且不会超过一百万。最后的测试样例后面将是一个点号作为一行。
//输出
//对于每一个s，你应该打印最大的n，使得存在一个a，让s=a^n
//用kmp算法的next数组，next数组的最后一个值，当最后一个值为被字符
// 串的长度减去后还可以被长度整除，那么就是这个值，否则就是1
        Scanner input = new Scanner(System.in);
        while (true) {
            String s = input.nextLine();
            if (s.equals(".")) break;
            int next = getNext(s);
            if (s.length() % (s.length() - next) == 0) {
                System.out.println(s.length() / (s.length() - next));
            } else {
                System.out.println(1);
            }
        }


    }

    public static int getNext(String s) {
        int i = 0;
        int j = -1;
        int m = s.length();
        int next[] = new int[m + 1];
        next[0] = -1;
        while (i < s.length()) {
            if (j == -1 || s.charAt(i) == s.charAt(j)) {
                i++;
                j++;
                next[i] = j;
            } else {
                j = next[j];
            }
        }
        return next[m];
    }
}
